function collision(joueur)
{
      var Item;
      if(joueur == "joueur-dist")
      {
         Item = "item-dist";
      }
      else {
          Item = "item";
      }
    for (var i=v[Item].length-1; i>=0; i--) {
        
        if(v[Item][i].x+v["constantes"]["blockW"] < v["constantes"]["posXof"]){
            continue;
        }
        else if(v[Item][i].x > v["constantes"]["posXof"] + v["constantes"]["joueurW"]){
            continue;
        }
        else { 
            if(v[Item][i].y + v["constantes"]["blockH"] < v[joueur].y + v[joueur].playgroundDom.offsetTop)
            {
                continue;
            }
            else if(v[Item][i].y > v[joueur].y + v[joueur].playgroundDom.offsetTop + v["constantes"]["joueurH"]){
                continue;
            }
            else {
                return v[Item][i];
            }
        }
    }
    return false;
}

/*
function verificationArriveeSurBlock(block)
{
    if(v["joueur"].occurSaute >= 0)
    {
        if( parseInt(v["joueur"].dom.style.top.substr(0, v["joueur"].dom.style.top.length-2), 10) <= block.y){
            v["joueur"].y = block.y+24 - v["constantes"]["joueurH"];
            v["joueur"].onABlock = true;
        }
    }
    else {
        v["joueur"].occurSaute = v["joueur"].occurSaute * -1;
        v["joueur"].occurSaute++;
        v["joueur"].onABlock = false;
    }
}*/

function sauterLocal()
{
    sauter("joueur");
}

function sauter(joueur){
	if(joueur == "joueur" && v[joueur].bSaute == false){
		var pattern_temp = new Array();
		for(var i = 0; i < v["pattern"].length; i++){
			pattern_temp.push(v["pattern"][i]);
		}
		
		PUBNUB.publish({             // SEND A MESSAGE.
				channel : "saut",
				message : {
					"game_id" : 1, 
					"bgPos" : v["joueur"].backgroundPos,
					"background" : v["joueur"].backgroundId, 
					"perso" : v["joueur"].persoId,
					"ident" : v["joueur"].ident,
					"pseudo" : v["joueur"].pseudo,
					"pattern" : v["pattern"],
                                        "occurSaute" : v["joueur"].occurSaute,
                                        "hauteur" : v["joueur"].hauteur,
                                        "col" : v["joueur"].col,
                                        "ligne" : v["joueur"].ligne
					//"timeRemaining": v["item-wl"][0].timeRemaining,
					//"nbBlocs" : v["constantes"].blocNumber
				}
		});
	}
	v[joueur].bSaute = true;
}

function calculSaut(joueur){
        v[joueur].lasty = v[joueur].y;
        v[joueur].y = v[joueur].occurSaute*v[joueur].occurSaute + v[joueur].hauteur;
	if(v[joueur].y > v["constantes"]["posYinit"]){
		v[joueur].y = v["constantes"]["posYinit"];
		v[joueur].hauteur = 42;
		v[joueur].bSaute = false;
		v[joueur].occurSaute = -10;
		v[joueur].underABlock = false;
		v[joueur].onABlock = false;
	}
        
}

function calculMathSaut(occurSaute, hauteur)
{
    return occurSaute*occurSaute + hauteur;
}

function determineNear_occurSaute(y, hauteur)
{
    var occurSaute = -10; 
    while(calculMathSaut(occurSaute, hauteur) > y)
        { occurSaute++; }
    return occurSaute;
}

function gestionCollision(){
    var tabJoueur = new Array("joueur", "joueur-dist");
    for(j in tabJoueur)
        {
            var joueur = tabJoueur[j];
           
            var Item = collision(joueur);
            if(Item){
                            if(v[joueur].occurSaute > 0 && !v[joueur].underABlock && (v[joueur].lasty + v[joueur].playgroundDom.offsetTop + v["constantes"]["joueurH"] <= Item.y) ){
                                    v[joueur].bSaute = false;
                                    v[joueur].y = (Item.y - v["constantes"]["joueurH"]) - v[joueur].playgroundDom.offsetTop;
                                    v[joueur].occurSaute = determineNear_occurSaute(v[joueur].y, 10);
                                    v[joueur].hauteur = 10;
                                    v[joueur].onABlock = true;
                                    return;
                            } else if(v[joueur].occurSaute > 0 && !v[joueur].underABlock)
                            {
                                    v[joueur].dom.style.opacity = 0.4;
                                    v[joueur].underABlock = true;
                                    v[joueur].occurSaute = Math.abs(v[joueur].occurSaute);
                                    v[joueur].occurSaute++;
                                    //v[joueur].y = Item.y + v["constantes"]["blockH"];
                                    calculSaut(joueur);
                                    loserage(joueur, 20);
                                    return;
                            }
                            if(v[joueur].occurSaute < 0 && !v[joueur].onABlock){
                                    v[joueur].underABlock = true;
                                    v[joueur].occurSaute = Math.abs(v[joueur].occurSaute);
                                    v[joueur].occurSaute++;
                                    //v[joueur].y = Item.y + v["constantes"]["blockH"];
                                    calculSaut(joueur);
                                    return;
                            }
            }
            else{
                    v[joueur].dom.style.opacity = 1;
                    if(v[joueur].y != v["constantes"]["posYinit"] && v[joueur].onABlock && !v[joueur].bSaute){
                            v[joueur].occurSaute = 0;
                            v[joueur].bSaute = true;
                            v[joueur].hauteur = v[joueur].y;
                            v[joueur].onABlock = false;
                    }
            }
        }
}